package com.myk.game.heroscuffle.events;

/**
 * 游戏事件基础类，主要为了强制存入
 */
public class GameEventBase{

    private GameEventListener<? extends GameEventBase> gameEventListener; //触发这个事件的被观察者
    private EventRunBack<? extends GameEventBase> gameEventRunBack; //触发这个事件的观察者
    public int eventRound; //产生这个事件时的回合

    protected GameEventBase(int eventRound) {
        this.eventRound = eventRound;
    }

    /**
     * 传入产生这个事件的监听器和回调对象，可以方便以后的各种神奇操作
     */
    public void setListenerAndRunBack(GameEventListener<? extends GameEventBase> listener, EventRunBack<? extends GameEventBase> runBack) {
        this.gameEventListener = listener;
        this.gameEventRunBack = runBack;
    }

    /**
     * 将触发这个事件的回调对象RunBack从它所在的Listener列表中移除，
     * 以后不会再监听这个事件了
     */
    public void removeRunBackFromListener() {
        gameEventListener.removeRunBack(gameEventRunBack);
    }

}
